package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;

import java.util.Map;

/**
 * @author 里
 * @Description:
 */
public interface GoodsTypeService {
    /**
     * 查询所有商品的分类
     * @return
     */
    String getGoodsType();

    /**
     * 查询所有商品的分类
     * @return
     */
    Map<String, Object> getGoodsUnitList();

    /**
     *  查询所有的商品信息
     * @param page
     * @param rows
     * @param goodsName
     * @param goodsTypeId
     * @return
     */
    Map<String, Object> getGoodsList(Integer page, Integer rows, String goodsName, Integer goodsTypeId);

    /**
     * 商品添加或修改
     * @param goods
     */
    void saveOrUpdateGoods(Goods goods);

    /**
     * 新增分类
     * @param goodsTypeName
     * @param pId
     */
    void saveGoodsType(String goodsTypeName, Integer pId);

    /**
     * 删除分类
     * @param goodsTypeId
     */
    void deleteGoodsType(Integer goodsTypeId);

    /**
     * 商品删除
     * @param goodsId
     */
    void deleteGoodsById(Integer goodsId);

    /**
     * 无库存商品列表展示（可以根据商品名称或编码查询）
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    Map<String, Object> getNoInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 有库存商品列表展示（可以根据商品名称或编码查询）
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    Map<String, Object> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode);


    /**
     * 添加商品期初库存
     * @param goodsId
     * @param inventoryQuantity
     * @param purchasingPrice
     * @return
     */
    ServiceVO saveStock(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    /**
     * 删除商品库存
     * @param goodsId
     * @return
     */
    ServiceVO deleteStock(Integer goodsId);

    /**
     * 查询库存报警商品信息
     * @return
     */
    Map<String, Object> listAlarm();
}
